package cn.supermarket.utils;


import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Set;

@Component
public class easyExcel {

    /**
     * 导出所有列
     * @param list  要导出的信息集合，T为泛型，例如：AdminSimpleDTO
     * @param fileName  导出的文件名，默认在根目录下
     * @param sheet   导出的表表格标签页名，自定义
     */
    public void writeExcelAll(List list, String fileName, String sheet){

        ExcelWriter excelWriter = com.alibaba.excel.EasyExcel.write(fileName, T.class).build();
        WriteSheet writeSheet = com.alibaba.excel.EasyExcel.writerSheet(sheet).build();
        excelWriter.write(list,writeSheet);
        excelWriter.finish();
        System.out.println(list);
    }

    /**
     * 导出表格，但是排除部分列
     * @param excluded  需要排除的字段名，即实体类中的属性名
     * @param list  要导出的信息集合，T为泛型，例如：AdminSimpleDTO
     * @param fileName  导出的文件名，默认在根目录下
     * @param sheet   导出的表表格标签页名，自定义
     */
    public void writeExcluded(Set<String> excluded,List<T> list ,String fileName,String sheet){
        com.alibaba.excel.EasyExcel.write(fileName,T.class)
                .excludeColumnFiledNames(excluded)
                .sheet(sheet)
                .doWrite(list);
    }


    /**
     * 导出表格，只导出部分列
     * @param included  需要导出的字段名，即实体类中的属性名
     * @param list  要导出的信息集合，T为泛型，例如：AdminSimpleDTO
     * @param fileName  导出的文件名，默认在根目录下
     * @param sheet   导出的表表格标签页名，自定义
     */
    public void writeIncluded(Set<String> included,List<T> list ,String fileName,String sheet){
        com.alibaba.excel.EasyExcel.write(fileName,T.class)
                .includeColumnFiledNames(included)
                .sheet(sheet)
                .doWrite(list);
    }

}
